//导入mysql模块
const db=require('../db/index')
//导入bcrypt模块
const bcrypt=require('bcryptjs')

//获取用户信息
exports.getUserInfo=(req,res)=>{
  //定义查询用户信息的sql语句
  const sql='select id,username,nickname,email,user_pic from ev_users where id=?'

  //执行sql语句
  db.query(sql,req.user.id,(err,result)=>{
    //执行sql语句失败
    if(err) return res.cc(err)

    //执行sql语句成功,但查询结果可能为空
    if(result.length!==1) return res.cc('获取用户信息失败!')

    //获取用户信息成功
    res.send({
      status:0,
      message:'获取用户信息成功!',
      data:result[0]
    })
  })
}

//更新用户信息
exports.updateUserInfo=(req,res)=>{
  const sql='update ev_users set ? where id=?'
  db.query(sql,[req.body,req.body.id],(err,result)=>{
    if(err) return res.cc(err)
    if(result.affectedRows!==1)return res.cc('更新用户的基本信息失败!')
    res.cc('更新用户信息成功!',0)
  })
}

//重置密码
exports.updatePassword=(req,res)=>{
  //根据id查询用户是否存在
  const sql='select * from ev_users where id=?'
  //执行sql语句
  //express-jwt中间件配置成功之后可以使用req.user对象来访问JWT字符串中解析出来的用户信息
  db.query(sql,req.user.id,(err,result)=>{
    if(err) return res.cc(err)
    if(result.length!==1) return res.cc('用户不存在!')

    //判断旧密码是否一致
    const compareResult=bcrypt.compareSync(req.body.oldPwd,result[0].password)
    if(!compareResult)return res.cc('旧密码错误')

    //更新数据库密码
    const sql='update ev_users set password=? where id=?'
    const newPwd=bcrypt.hashSync(req.body.newPwd,10)
    db.query(sql,[newPwd,req.user.id],(err,result)=>{
      if(err) return res.cc(err)
      if(result.affectedRows!==1) return res.cc('更新密码失败!')
      res.cc('更新密码成功',0)
    })
  })
}

//更换头像
exports.updateAvatar=(req,res)=>{
  const sql='update ev_users set user_pic=? where id=?'
  db.query(sql,[req.body.avatar,req.user.id],(err,result)=>{
    if(err) return res.cc(err)
    if(result.affectedRows!==1) return res.cc('更新头像失败')
    res.cc('更换头像成功',0)
  })
}